#pragma once
#include <cassert>
#include <vector>
#include <memory>

#include "WallGeometry.h"
#include "Flag.h"
#include "Particle.h"
#include "ImpingementParameter.h"

using namespace std;
class WallRebound
{
public:
	WallRebound()=default;
	WallRebound(const Particle& pIn, const Flag& pFlag, const shared_ptr<WallGeometry> wallGeometry0,
		const ImpingementParameter& ImpingePara_in);
	double DotProduct(vector<double> v1, vector<double> v2);
	Particle pOut;// updated particle after rebound
};

